package cl.zeke.remoto.negocio.entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author eduardo
 */
@Entity
@Table(name="perfil")
@NamedQueries({
    @NamedQuery(name="Perfil.traerTodos", 
        query="select p from Perfil p order by p.nombre asc")
})
public class Perfil implements Serializable {
    
    public static final int ID_PERFIL_SUPER_ADMINISTRADOR = 1;
    public static final int ID_PERFIL_ADMINISTRADOR = 2;
    public static final int ID_PERFIL_USUARIO = 3;
    
    @Id
    @Column(name="id_perfil")
    private Integer idPerfil;
   
    @Column(name="nombre")
    private String nombre;
    
    @OneToMany(mappedBy = "perfil", fetch = FetchType.LAZY)
    private List<Usuario> usuarioList;
    
    public Integer getIdPerfil() {
        return idPerfil;
    }

    public void setIdPerfil(Integer idPerfil) {
        this.idPerfil = idPerfil;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<Usuario> getUsuarioList() {
        return usuarioList;
    }

    public void setUsuarioList(List<Usuario> usuarioList) {
        this.usuarioList = usuarioList;
    }
    
    @Override
    public int hashCode() {
        int hash = 5;
        hash = 83 * hash + (this.idPerfil != null ? this.idPerfil.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Perfil other = (Perfil) obj;
        if (this.idPerfil != other.idPerfil && (this.idPerfil == null || !this.idPerfil.equals(other.idPerfil))) {
            return false;
        }
        return true;
    }
    
}
